//package com.ruoyi.extdata.service.impl;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.ruoyi.bizsys.domain.ExtReqLog;
//import com.ruoyi.bizsys.service.IExtReqLogService;
//import com.ruoyi.common.enums.RspEnmu;
//import com.ruoyi.common.exception.BusinessException;
//import com.ruoyi.common.utils.DateUtils;
//import com.ruoyi.common.utils.http.HttpUtils;
//import com.ruoyi.extdata.common.config.SlackConfig;
//import com.ruoyi.extdata.service.ISlackService;
//import com.ruoyi.system.service.ISysConfigService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.Map;
//
//@Slf4j
//@Service
//public class SlackServiceImpl implements ISlackService {
//
//    @Autowired
//    SlackConfig slackConfig;
//
//    @Autowired
//    ISysConfigService iSysConfigService;
//
//    @Autowired
//    IExtReqLogService extReqLogService;
//
//    @Override
//    public Map<String,String> slackSendRobotMessage(String message,String name) {
//        Map<String,String> map = new HashMap<>();
//        try{
//
//            String value = iSysConfigService.selectConfigByKey("slack_send_message_route");
//            JSONArray jsonArray = JSONArray.parseArray(value);
//
//            String apiName = "";
//            String channel = "";
//
//            for (int i = 0;i<jsonArray.size();i++){
//                JSONObject jsonObject = jsonArray.getJSONObject(i);
//                if(name.equals(jsonObject.get("name"))){
//                    apiName = jsonObject.getString("type");
//                    channel = jsonObject.getString("channel");
//                    break;
//                }
//            }
//            sendSlackMessage(message,apiName,channel);
//            map.put("apiName",apiName);
//            map.put("channel",channel);
//            return map;
//        }catch (Exception e){
//            log.error("Slack push error,", e);
//            //sendSlackMessage(message,"Slack-Post-Message",slackConfig.getChannelId());
//            map.put("apiName","Slack-Post-Message");
//            map.put("channel",slackConfig.getChannelId());
//            return map;
//        }
//
//    }
//
//    public void sendSlackMessage(String message,String apiName,String channelId){
//
//        ExtReqLog extReqLog = new ExtReqLog();
//        extReqLog.setApiName(apiName);
//        extReqLog.setReqUrl(slackConfig.getPostMessageUrl());
//
//        Map<String,String> map = new HashMap<>();
//        map.put("Authorization","Bearer "+slackConfig.getRobotToken());
//        JSONObject param = new JSONObject();
//        param.put("channel",channelId);
//
//        String url = "";
//
//        if("Slack-Post-Message".equals(apiName)){
//            param.put("blocks",message);
//            url = slackConfig.getPostMessageUrl();
//        }else if("Slack-Me-Message".equals(apiName)){
//            param.put("text",message);
//            url = slackConfig.getMeMessageUrl();
//        }
//
//        extReqLog.setReqParam(param.toString());
//        extReqLog.setReqTime(DateUtils.dateTimeNow());
//
//        String s = "";
//        try {
//            s = HttpUtils.sendPost(url, param.toString(), map);
//        } catch (Exception e) {
//            extReqLog.setResTime(DateUtils.dateTimeNow());
//            extReqLog.setCallStatus("2");
//            extReqLogService.insertExtReqLog(extReqLog);
//            log.error(e + "");
//            throw new BusinessException(e.getMessage(), RspEnmu.NETWORK_BUSY);
//        }
//
//        extReqLog.setResTime(DateUtils.dateTimeNow());
//        extReqLog.setRspResult(s);
//
//        //解析请求结果
//        if (s != null && !StringUtils.isBlank(s)) {
//
//            JSONObject jsonObject = JSONObject.parseObject(s);
//            String ok = jsonObject.getString("ok");
//
//            extReqLog.setRetCode(ok);
//
//            if ("true".equals(ok)) {
//                extReqLog.setRetMsg(ok);
//                extReqLog.setCallStatus("1");
//                extReqLogService.insertExtReqLog(extReqLog);
//            } else {
//                String responseMessage = jsonObject.getString("error");
//                extReqLog.setRetMsg(ok);
//                extReqLog.setCallStatus("0");
//                extReqLogService.insertExtReqLog(extReqLog);
//                throw new BusinessException(responseMessage, RspEnmu.MONNIFY_INTERFACE_ERROR);
//            }
//        } else {
//            extReqLog.setCallStatus("0");
//            extReqLogService.insertExtReqLog(extReqLog);
//            throw new BusinessException("response is null", RspEnmu.MONNIFY_INTERFACE_ERROR);
//
//        }
//    }
//
//}
